1110D - Jongmah - CodeForces Solution


dp *2200

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;
using pii=pair<int, int>;
//using ll=long long;

#define loop(x,n) for(int x=0; x<n; x++)
#define loop1(x,n) for(int x=1; x<=n; x++)
#define loopr(x,n) for(int x=n; x-->0;)

#define F first
#define S second
#define pb push_back
#define lb lower_bound
#define mp make_pair
#define all(v) begin(v), end(v)
#define UNTIE_IO ios_base::sync_with_stdio(0);cin.tie(0);

const int MAX=1e6+20;
const int INF=2e9;
const int MOD=998244353;

int dp[MAX][3][3];
int N,M;
int cnt[MAX];

signed main(){
    cin>>N>>M;
    int x;
    loop(i, N){
        cin>>x;
        cnt[x+3]++;
    }

    int ans=0;
    for(int i=4; i<M+6; i++){
        loop(x, 3){
            loop(y, 3){
                dp[i][x][y] = -INF;
                loop(z, 3){
                    if (x>cnt[i]||x+y>cnt[i-1]||x+y+z>cnt[i-2]||y+z>cnt[i-3]||z>cnt[i-4]) continue;
                    dp[i][x][y] = max(dp[i][x][y], dp[i-1][y][z]+x+(cnt[i-2]-x-y-z)/3);
                }
                ans = max(ans, dp[i][x][y]);
            }
        }
    }
    cout << ans << '\n';
}


Comments

Submit
0 Comments
More Questions

1676G - White-Black Balanced Subtrees
1716D - Chip Move
1352F - Binary String Reconstruction
1487B - Cat Cycle
1679C - Rooks Defenders
56A - Bar
1694B - Paranoid String
35A - Shell Game
1684A - Digit Minimization
43B - Letter
1017A - The Rank
1698B - Rising Sand
235A - LCM Challenge
1075B - Taxi drivers and Lyft
1562A - The Miracle and the Sleeper
1216A - Prefixes
1490C - Sum of Cubes
868A - Bark to Unlock
873B - Balanced Substring
1401D - Maximum Distributed Tree
1716C - Robot in a Hallway
1688B - Patchouli's Magical Talisman
99A - Help Far Away Kingdom
622B - The Time
1688C - Manipulating History
1169D - Good Triple
1675B - Make It Increasing
588A - Duff and Meat
1541B - Pleasant Pairs
1626B - Minor Reduction